#ifndef XRN_DLL_TYPEDEF_H 
#define XRN_DLL_TYPEDEF_H
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include "xrn_lib_interposer.h"

int (* xrn_make_monovalent_key_wrapper_dll)( FILE *  ,uint64_t ,uint64_t ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_binomial_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_monomial_key_wrapper_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_start_point_wrapper_dll)( FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_commitment_from_binomial_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_commitment_from_sym_certificate_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_commitment_from_sym_signatures_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_monomial_response_wrapper_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_monomial_proof_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_monomial_proof_from_signature_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_monomial_proof_from_sym_certificate_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_permute_matrix_compressed_deterministically_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_permute_matrix_compressed_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_dump_library_info_dll)( );
int (* xrn_print_metadata_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_convert_type_wrapper_dll)( FILE *  ,FILE *  ,xrn_lib_xtype_t ,xrn_lib_xtype_t ,xrn_crypto_extra_settings_t );
int (* xrn_generate_confidential_pseudo_random_number_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_exchange_monomial_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_exchange_polyvalent_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_monovalent_key_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_decode_encode_wrapper_dll)( FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_encrypt_symmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_decrypt_symmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_encrypt_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_decrypt_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_split_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_join_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_hash_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_hash_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_signature_symmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_signature_symmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_signature_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_signature_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_ring_signature_wrapper_dll)( FILE *  ,FILE **  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,uint16_t ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_permute_ring_signature_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_ring_signature_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_certificate_symmetric_wrapper_dll)( FILE *  ,FILE *  ,char *  ,FILE *  ,uint64_t ,uint64_t ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_certificate_symmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_certificate_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,char *  ,FILE *  ,uint64_t ,uint64_t ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_certificate_asymmetric_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_monomial_proof_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_monomial_proof_from_signature_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_monomial_proof_from_certificate_wrapper_dll)( FILE *  ,FILE *  ,FILE *  ,FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_estimate_steg_block_length_dll)( FILE *  ,uint8_t ,uint64_t *  );
int (* xrn_make_steg_block_dll)( FILE *  ,FILE *  ,FILE *  ,uint8_t ,uint32_t ,uint64_t ,uint64_t ,xrn_crypto_extra_settings_t );
int (* xrn_make_steg_raw_dll)( FILE *  ,FILE *  ,FILE *  );
int (* xrn_extract_steg_block_dll)( FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_extract_steg_raw_dll)( FILE *  ,FILE *  );
int (* xrn_matrix_compressed_check_wrapper_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_matrix_check_wrapper_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_matrix_decompress_wrapper_dll)( FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_matrix_compressed_permute_wrapper_dll)( FILE *  ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_make_point_wrapper_dll)( FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_load_default_settings_dll)( xrn_crypto_extra_settings_t  *  );
int (* xrn_dump_encoder_parameters_wrapper_dll)( xrn_encoding_settings_t ,FILE *  );
int (* xrn_make_checksums_wrapper_dll)( FILE * ,FILE * );
int (* xrn_check_checksums_wrapper_dll)( FILE * ,FILE * );
void (* xrn_set_default_log_dll)( );
int (* xrn_change_error_log_dll)( FILE * ,uint8_t );
int (* xrn_change_warning_log_dll)( FILE * ,uint8_t );
int (* xrn_change_notification_log_dll)( FILE * ,uint8_t );
int (* xrn_change_debug_log_dll)( FILE * ,uint8_t ,uint32_t );
int (* xrn_check_complete_blocks_dll)( FILE *  );
int (* xrn_join_blocks_dll)( FILE *  * ,uint8_t ,FILE *  );
int (* xrn_make_block_dll)( FILE *  ,FILE *  ,uint32_t ,uint64_t ,uint64_t );
int (* xrn_strip_header_from_block_dll)( FILE *  ,FILE *  );
int (* xrn_mine_stocastic_wrapper_dll)( FILE *  ,int ,int ,unsigned ,uint8_t ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_mine_random_wrapper_dll)( FILE *  ,float ,unsigned ,uint8_t ,FILE *  ,xrn_crypto_extra_settings_t );
int (* xrn_check_set_stocastic_settings_dll)( int * ,int * ,XBIT_TYPE );
int (* xrn_mine_random_settings_dll)( float * ,XBIT_TYPE );

#endif
